/*管道通信——进程B读取管道*/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc,char** argv)
{
	int fd;
	char buf[BUFSIZ];//BUFSIZ默认8KB
	bzero(buf,BUFSIZ);

	/*检查参数*/
	if(argc != 2)
	{
		printf("如要读取管道，则输入：%s 管道名\n",argv[0]);
		return 1;
	}

	/*打开管道*/
	fd = open(argv[1],O_RDONLY);//只读方式打开
	if(fd == -1)
	{
		perror("open");
		return 1;
	}

	/*读取数据*/
	while(read(fd,buf,BUFSIZ) != -1)
	{
		printf("read from fifo:%s",buf);
		if ((strncmp(buf, "quit", 4) == 0) && (strlen(buf) == 5)) 
			break;
		bzero(buf,BUFSIZ);
	}
	
	/*关闭管道*/
	close(fd);

	return 0;
}

